//=======================================================================
//功能: 		上传文件的工具类[依赖于jQuery]
//author:		岳静
//e-mail: 	yuejing0129@126.com
//QQ:			503490146
//date: 		2012-07-26
//version: 	1.0
//=======================================================================

var fileUpload = {

		/**
		 * 初始化上传文件控件位置
		 * @param _data : json类型的参数
		 *  _data.fileId : file控件的ID名称[不传默认为'fileToUpload']
		 *  _data.clickId: 点击控件的ID名称[不传默认为'fileClickId']
		 *  _data.mozilla: 火狐浏览器的size大小[不传默认为1]
		 *  _data.width  : 控件宽度
		 */
		initFileLocation : function(_data) {
			if(_data === undefined) {
				_data = {};
			}
			if(_data.fileId === undefined) {
				_data.fileId = "fileToUpload";
			}
			if(_data.clickId === undefined) {
				_data.clickId = "fileClickId";
			}
			//File控件对象
			var file = jQuery("#" + _data.fileId);
			//获取clickId控件的位置
			var clickId = jQuery("#" + _data.clickId);

			//为火狐
			//if ($.browser.mozilla) {
			if(_data.mozilla === undefined) {
				_data.mozilla = 1;
			}
			file.attr("size", _data.mozilla);
			//}

			if(_data.width === undefined) {
				_data.width = 50;
			}

			//设置样式
			file.css({
				//设置定位
				"position" : "absolute",
				//设置透明
				"opacity" : "0.0",
				"filter" : "alpha(opacity=0)",
				"-moz-opacity" : "0",
				//轮廓
				"outline" : "0",
				//手型
				"cursor": "pointer",
				//设置top
				"top" : clickId.offset().top + clickId.outerHeight + "px",
				//设置left
				"left" : clickId.offset().left,
				//设置宽度
				"width" : _data.width,
				//设置高度为控件的高度
				"height" : clickId.css("height")
			});

		},

		/**
		 * 触发上传图片按钮点击事件
		 * @param _data : json类型的参数
		 *  _data.fileId : file控件的ID名称[不传默认为'fileToUpload']
		 */
		clickUpFile : function(_data) {
			if(_data === undefined) {
				_data = {};
			}
			if(_data.fileId === undefined) {
				_data.fileId = "fileToUpload";
			}
			//不为IE
			if(navigator.userAgent.indexOf("MSIE") <= 0) {
				jQuery("#" + _data.fileId).click();
			}
		},

		/**
		 * 上传图片
		 * @param _data : 传入的参数[为json]
		 *  _data.address : 项目根目录地址[如: /weibo, 默认为'/weibo']
		 *  _data.addressAll : 上传图片的完整地址[默认为'/weibo/uploadServlet']
		 *  _data.fileElementId : 上传图片的file的ID名称[不传默认为'fileToUpload']
		 *  _data.loading : 加载中图片显示的ID[不传默认为'loading']
		 *  _data.param : 传入后台的参数的json
		 *  _data.param.imgConfineType   : 图片限制类型[选项为: =, <=, >= ]
		 *  _data.param.imgConfineWidth  : 图片限制宽度
		 *  _data.param.imgConfineHeight : 图片限制高度
		 *  _data.success : 执行成功的回调函数[回调函数内有JSON类型的值]
		 * @returns
		 */
		ajaxFileUpload : function(_data) {
			if(_data.fileElementId === undefined) {
				_data.fileElementId = 'fileToUpload';
			}
			if(_data.param === undefined) {
				_data.param = {};
			}
			if(_data.address === undefined) {
				_data.address = "/weibo";
			}
			if(_data.loading === undefined) {
				_data.loading = "loading";
			}
			if(_data.addressAll === undefined) {
				_data.addressAll = _data.address + "/uploadServlet";
			}

			jQuery("#" + _data.loading)
			.ajaxStart(function(){
				jQuery(this).show();
			})
			.ajaxComplete(function(){
				jQuery(this).hide();
				jQuery(this).unbind("ajaxStart");
				jQuery(this).unbind("ajaxComplete");
			});

			jQuery.ajaxFileUpload({
				url: _data.addressAll,
				secureuri:false,
				fileElementId: _data.fileElementId,
				dataType: 'json',
				data: _data.param,
				success: function (data, status) {
					//上传成功
					if(data.result === 'success') {
						_data.success(data);
					}
					//出现异常
					else if(data.result === 'error') {
						alert('上传文件异常!');
					}
				},
				error: function (data, status, e) {
					alert(e);
				}
			});
			return false;
		},

		/**
		 * 获取file控件的绝对路径
		 * @param _name : file控件的名称
		 */
		getFullPath : function(_name) {
			var _obj = jQuery("#" + _name);
			if(_obj[0]) {
				//ie
				if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
					_obj.select();
					jQuery(window).focus();
					return document.selection.createRange().text;
				}
				//firefox
				else if(window.navigator.userAgent.indexOf("Firefox") >= 1) {
					if(_obj[0].files) {
						return _obj[0].files.item(0).getAsDataURL();
					}
					return _obj.val();
				}
				return _obj.val();
			}
		},

		/**
		 * 获取图片的尺寸
		 * @param _name : file控件的名称
		 */
		getImgDimension : function(_name) {
			var _src = this.getFullPath(_name);
			//创建图片
			//jQuery("<img id='img_" + _name + "' src='" + _src + "' />").appendTo("body");
			//var img = jQuery("#img_" + _name);
			if(this.imgDimension === undefined) {
				this.imgDimension = new Image();
			}
			if(this.imgDimension.src != _src) {
				this.imgDimension.src = _src;
			}
			$("#uploadFileImg").attr("src", this.imgDimension.src);
			alert(this.imgDimension.src + "||||||");
			//img.css("position", "absolute");
			//img.attr("src", this.getFullPath(_name));
			//return { "width" : img[0].offsetWidth, "height" : img[0].offsetHeight};
			return { "width" : this.imgDimension.width, "height" : this.imgDimension.height};
		}
};